import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.util.List;

public class JedisString {

    private static void test1(Jedis jedis) {
        System.out.println("------------------------------------");
        System.out.println("mget 和 mset");
        //这里为了演示效果，使用之前会先释放所有 key
        jedis.flushAll();

        jedis.mset("key1", "value1", "key2", "value2", "key3", "value3");

        List<String> values = jedis.mget("key1", "key2", "key3", "key100");

        System.out.println(values);
    }

    private static void test2(Jedis jedis) {
        System.out.println("------------------------------------");
        System.out.println("getrange 和 setrange");
        jedis.flushAll();

        jedis.set("key", "helloworld");

        String value1 = jedis.getrange("key", 2, 5);
        System.out.println("value1: " + value1);

        jedis.setrange("key", 2, "cykkk");

        String value2 = jedis.get("key");
        System.out.println("value2: " + value2);
    }

    private static void test3(Jedis jedis) {
        System.out.println("------------------------------------");
        System.out.println("append");
        jedis.flushAll();

        jedis.set("key1", "hello");
        jedis.append("key1", " world");

        String value1 = jedis.get("key1");
        System.out.println("value1: " + value1);
    }

    private static void test4(Jedis jedis) {
        System.out.println("------------------------------------");
        System.out.println("incr 和 decr");
        jedis.flushAll();

        jedis.set("key1", "10");
        jedis.incr("key1");
        System.out.println("inct key1: " + jedis.get("key1"));

        jedis.set("key1", "10");
        jedis.decr("key1");
        System.out.println("decr key2: " + jedis.get("key1"));
    }


    public static void main(String[] args) {
        //这里只是开发阶段这么写，要是部署到云服务器上，就需要根据实际情况来配置这个的 ip 和端口号.
        JedisPool jedisPool = new JedisPool("tcp://127.0.0.1:8888");
        //使用 try，出代码块时自动释放 jedis 连接(不是关闭，而是放回到连接池中)
        try(Jedis jedis = jedisPool.getResource()) {
            // 测试场景：
            // ......
            test1(jedis);
            test2(jedis);
            test3(jedis);
            test4(jedis);
        }
    }

}
